<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>27 - 正则表达式</title>
</head>
<body>
    <script>

        // 正则表达式       符号语言 (由一些特殊的符号组成的一个字符串)





        // A. 使用步骤:
        // 1. 定义一个正则
        // 语法:     
        // ☛   let 自定义变量 = /正则符号/;
        // ☛   let 自定义变量 = new 正则对象();  [今天不讲]
        // ☛   let 自定义变量 = new RegExp();   [今天不讲]


        // 2. 通过正则验证表达内容
        // 语法:     
        // ☛   正则变量.test(要被正则验证的内容);
        // ☛   正则变量.exec(要被正则验证的内容);





        // B. 符号
        // 1. 正则表达式中的边界符
        //      ^       表示开始符号
        //      $       表示结束符号


        // 2. 边界符在正则表达式中如何使用?
        // 语法:     
        // ☛   let 变量 = /^ 正则内容 $/;


        // 3. 正则表达式中的量词符
        //      *                   出现的次数 >= 0 次 (要么不出现, 要么可以出现若干次)
        //      +                   出现的次数 >= 1 次 (最少有一个)
        //      ?                   出现1次或者0次     (要么只有一个, 要么一个没有)
        //      {数字3}             出现的次数等于当前设置的数字
        //      {数字,}             出现的次数大于等于设置的数字
        //      {数字1,数字2}       出现的次数大于等于第一个值并且小于等于第二个值


        // 4. 量词符使用
        // 语法:     
        // ☛    let 变量 = /^ 正则内容量词符 $/;  


        // 5. 预定义类      提前定义好并且具有特殊含义的类名
        //      \d              表示从数字0-9之间取值 等价于 [0123456789] 或者 [0-9]
        //      \D              表示除了0-9之间的值(只要不是数字就可以), 表示取反
        //      \w (小写)       从字母 a 到 z 或者 A-Z 数字0到9和下划线之间的任意的值 等价于[a-zA-Z0-9_]
        //      \W (大写)       除了以上内容之外所有的值 (取反)
        //      \s (小写)       用来获取特殊符号 (\r \n \t ...)
        //      \r \n           表示回车换行
        //      \t              表示制表符 (相当于用户按下了 tab 键)
        //      \S (大写)       表示取反, 除了特殊符号.


        // 6. 正则参数(修饰符)
        //      g       全局匹配 (global)
        //      i       表示忽略大小写
        // 语法:     
        // ☛   let 正则变量 = /正则内容/g;

        // gi:  全局忽略字母大小写, 所有内容都找一遍忽略大小写





        // C. 替换字串      将字符串中的内容使用其他内容换掉 (敏感词替换)

        // 1. 字符串替换
        // 语法1:     
        // ☛   字符串.replace('要被替换的值', '替换后的值');

        // 代码演示:
        let str = '普京大帝就是牛叉,说干就干';
        // 需要将字符串中 牛叉 换成 **
        console.log(str.replace('牛叉', '**'));

        // 语法2:     
        // ☛   字符串.replace(正则, '替换后的值');

        // 代码演示:
        // | 表示或者的意思
        let reg = /日本人|美国人|蔡女士/g;
        let ary = '蔡女士的好朋友有日本人和美国人';
        console.log(ary.replace(reg, '**'));

    </script>
</body>
</html>